<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 私有成员 私有属性和私有方法；
        // 私有成员的修饰符 # 

        //ES5私有
        // function Person() {
        //     this.name = "张安";// 公有属性
        //     let _weight = "100kg";//私有属性
        // }
        //  let zhangsan = new Person();
        // console.log(zhangsan.name);//张安


        //ES6 私有
        // 私有成员 ： 只能类的内部调用 ，子类 和外部都不能调用
        class Person{
            #weight="100kg";//私有属性
            constructor(name){
                this.name = name;  // 公有成员
                this.age = 20
            }
            // 利用公有方法调用私有成员 
            getWeight(){  // 公有方法,调取私有属性 
                console.log("体重是?",this.#weight);
            }

            #fn(){
                console.log("私有方法")
            }
        }
        let zhangsan = new Person("张三");
        console.log(zhangsan);// Person {name: '张三', age: 20, #fn: ƒ, #weight: '100kg'}
        zhangsan.getWeight();// 体重是? 100kg
    </script>
</body>

</html>